const state = {
  searchData: uni.getStorageSync('STORAGE_KEY') || [] // 搜索历史
}

const mutations = {
  /**
   * 保存数据到 storage
   */
  saveToStorage(state) {
    if (state.searchData.length > 6) {
      state.searchData.pop()
    }
    // 把数据保存到本地存储
    uni.setStorage({
      key: 'STORAGE_KEY',
      data: state.searchData
    })
  },
  /**
   * 添加数据
   */
  addSearchData(state, val) {
    /**
			 * 搜索历史数据的基本业务逻辑
			 * 1.如果当前的搜索内容已存在，则原有的搜索内容需要被展示到搜索历史的头部，而不是新增一条搜索内
			   方法：1.1 把已存在的搜索内容，删·  除
				     1.2 把新的搜索内容，添加到头部
			 * 2.如果当前的搜索内容不存在，则新的搜索内容会被展示在搜索历史的头部
			 * */
    if (!val) return
    const index = state.searchData.findIndex(item => item === val)
    if (index !== -1) {
      state.searchData.splice(index, 1)
    }
    state.searchData.unshift(val)
    this.commit('search/saveToStorage')
  },
  /**
   * 删除指定历史数据
   */
  removeSearchData(state, val) {
    state.searchData.splice(val, 1)
    this.commit('search/saveToStorage')
  },
  /**
   * 删除所有历史数据
   */
  removeAllSearchData(state) {
    state.searchData = []
    this.commit('search/saveToStorage')
  }
}

const actions = {}

const getters = {}
export default {
  namespaced: true,
  state,
  mutations,
  actions,
  getters
}
